package control

import (
	"dicomtodb/models"
)

var FileInfoChan = make(chan *models.FileInfo, 200)
var DicomInofChan = make(chan *models.DicomInfo, 100)

//处理数据主线程
func ProceDataToDB() {
	defer models.Wait.Done()
	defer models.Log.DEBUG("ProceDataToDB is quit.....")
	models.Log.DEBUG("ProceDataToDB start.....")

	// //统计信息
	models.Wait.Add(1)
	go DicomToDbProgress()

	// //dicom信息写入数据库中
	models.Wait.Add(1)
	go DicomInfoWriteToDB()

	//对比判断需要进行操作的文件
	models.Wait.Add(1)
	go contrastData()

	// //解析文件
	models.Wait.Add(1)
	go AnalysisDicom()

}

//读取 dicomchannel中数据 写入数据库中dicominfo表，无异常 将fileinfo写入completefile
func DicomInfoWriteToDB() {
	defer models.Wait.Done()
	defer models.Log.DEBUG("DicomInfoWriteToDB is quit")
loop:
	for {
		select {
		case d, ok := <-DicomInofChan:
			if !ok {
				models.Log.DEBUG("dicom管道读取结束～！")
				break loop
			}

			//time1 := time.Now()
			d.InsertOne()

			//time2 := time.Now().Sub(time1)
			//models.Log.DEBUG("FileInfoID:%v 入库时间：%s", d.FileInfoID, time2)
			//time.Sleep(10 * time.Microsecond)
			models.Log.INFO("DicomInofChan:%d,容量: %d", len(DicomInofChan), cap(DicomInofChan))
		default:
			break
		}

	}
	models.Log.INFO("dicom管道写入数据库完成～！")
}
